package com.aop.pay;

import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.util.Objects;

/**
 * @ClassName: LogHandler
 * @Description: TODO
 **/
public class LogHandler implements InvocationHandler {

    //目标对象
    private Object target;

    //实例化对象
    public LogHandler(Object target){
        this.target = target;
    }

    /***
     * @Description
     * 1.实现InvocationHandler接口
     * 2.重写invoke方法
     **/
    @Override
    public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {

        //判断是否属于接口
        if(target instanceof IPayService){
             before((Double)args[0]);
            //输出调用之前的日志信息
            //如果属于，进行方法invoke调用
            Object invoke = method.invoke(target, args);
            System.out.println("返回结果 : " + invoke);
            //输出调用之后的日志信息
            after((Double)args[0]);
        }
        return null;
    }

    public void before(double money){
        System.out.println("准备进行支付...." + money);
    }

    public void after(double money){
        System.out.println("支付成功了...." + money);
    }
}
